Set up nodectl end-to-end network test in CI#75
Conversation
- modify Makefile to run this script
…ctl-end-to-end-network-test-in-ci
…n-ci' of github.com:RSquad/ton-rust-node into feature/sma-59-set-up-nodectl-end-to-end-network-test-in-ci
There was a problem hiding this comment.
Pull request overview
This PR sets up end-to-end network testing infrastructure for nodectl in CI by converting a bash bootstrap script to Python, adding support for shared control-client keys in test networks, and implementing a new GitHub Actions workflow for automated testing.
Changes:
- Migrated the singlehost bootstrap script from bash to Python with enhanced logging and structured phases
- Added
--control-client-public-keyargument to test_run_net.py to pre-inject control-client keys into node configs - Implemented
--password-stdinflag in auth command to support non-interactive password input for CI environments - Created GitHub Actions workflow for nodectl e2e testing with proper trigger conditions and artifact upload on failure
- Added Makefile targets for local singlehost integration testing
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/node/tests/test_run_net_py/test_run_net.py | Added control-client key injection function and CLI argument |
| src/node/tests/test_run_net_py/run_singlehost_nodectl.py | New Python bootstrap script with 11 phases for complete setup and testing |
| src/node/tests/test_run_net_py/test_nodectl_ci.sh | New CI wrapper that calls Python script with appropriate environment variables |
| src/node/tests/test_run_net_py/requirements.txt | New file specifying pyyaml dependency |
| src/node-control/Makefile | Added singlehost integration test targets |
| src/node-control/commands/src/commands/nodectl/auth_cmd.rs | Added --password-stdin flag for non-interactive password input |
| .github/workflows/nodectl-e2e.yml | New GitHub Actions workflow for e2e testing |
| .github/workflows/ci.yml | Added paths-ignore configuration for markdown/docs files |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| for addr in pool_addrs: | ||
| self.log.info(f" Top up pool {addr} ({self.cfg.pool_topup} TON)") | ||
| self._bun_topup(addr, self.cfg.pool_topup) |
There was a problem hiding this comment.
important to check or edit when core np will be added: will it work normally with ton core np? Nominator pool can have enough funds to stake, but if validator didn't send deposit message with suitable amount it would be impossible to stake
There was a problem hiding this comment.
We will adapt the script later.
…e/nodectl/ branches
Summary
nodectl-e2eGitHub Actions workflow that boots a local 6-node TON network and runs nodectl against it end-to-end. Triggers on PR approval forrelease/nodectl/*, onrun-e2elabel, or via manual dispatch.run_singlehost_nodectl.py) covering 11 phases: build, configure, bootstrap network, configure wallets/pools/nodes, start nodectl service, wait for election participants, and validate via REST API.test_nodectl_ci.shthin CI wrapper with CI-appropriate timeouts and settings.test-e2e,singlehost-venv,stop-e2e) for running the e2e test locally.